## 内容
* 新用户初始化简历
* OpenFeign 远程调用
* Nacos 负载均衡
* 分布式事务

## OpenFeign 远程调用

## 集群和负载均衡
没有集群就没有负载均衡这个说法
![image-20230703234837017](https://img.wkq.pub/img/image-20230703234837017.png)

集群实现了**高可用**。负载均衡器用于实现流量的分发，提升**并发**

### 负载均衡器类型

* 硬负载均衡器： 基于硬件，F5
* 软负载均衡器： Nginx /Apache / Haproxy

* 四层代理： LVS + keepalived ,只是做请求的转发，不做请求的处理，速度比七层快很多
* 七层代理： Nginx ，可以处理请求的

### 多级网关

![image-20230704000212509](https://img.wkq.pub/img/image-20230704000212509.png)

### 负载均衡算法

* 轮询
* 权重
* url_hash
* ip_hash

### 服务端负载均衡

上面说的这些都是服务端负载均衡，即请求分发都是在服务端进行计算，计算以后再进行分发的。

后端请求的节点在服务端进行配置，然后请求到达的时候进行计算。

![image-20230704001041328](https://img.wkq.pub/img/image-20230704001041328.png)

### 客户端负载均衡

计算在客户端进行。客户端从注册中心拉取配置，在本地进行负载均衡算法。

![image-20230704001205174](https://img.wkq.pub/img/image-20230704001205174.png)

性能比客户端负载均衡器更好一些，因为少了一层。

客户端负载均衡器支持动态扩容。

## OSI 七层网络模型

* 应用层：与用户行为交互
* 表示层： 定义数据格式以及数据加密
* 会话层： 创建、管理以及销毁会话
* 传输层： 创建、管理请求端到响应端的连接
* 网络层： 请求端的 IP 地址
* 数据链路层：提供介质访问与链路管理。提供了计算机的 MAC 地址
* 物理层： 传输介质，物理媒介

## SEATA

![image-20230709150638876](https://img.wkq.pub/img/image-20230709150638876.png)

TM 不能得到异常通知，就会认为业务正常。

![image-20230709150700431](https://img.wkq.pub/img/image-20230709150700431.png)

两种方案，

1. 不对异常做全局的捕获和处理，不推荐使用。
2. 基于切面，异常通知，可以在异常通知里面针对事务进行回滚

## 分布式事务的最终一致性

* 分布式事务最终一致性
* 消息队列
* 本地消息表

### MQ 最终一致性

1. 完成主业务
2. 保存 mq 消息记录，保存到本地消息表
3. 本地事务提交以后发一个消息到 MQ
4. 其他服务监听 MQ ，监听到消息后进行消费。
5. 其他微服务消费成功后手动 ACK

